using System.Collections.Generic;
using System.Linq;

using Microsoft.WindowsAzure.StorageClient;

namespace Azure.Infrastructure
{
    public interface IRepository<T> where T : TableServiceEntity
    {
        IQueryable<T> Table { get; }
        void Attach(T existingItem);
        void Delete(T itemToDelete);
        void Insert(T newItem);
        T Load(string partitionKey, string rowKey);
        IEnumerable<T> Load(string partitionKey);
        IEnumerable<T> Query(IQueryable<T> query);
        IEnumerable<T> Last(int count);
        T Last();
        void Update(T post);
    }
}